home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Extra 1996 #3
/
AmigaPlus_CD-ROM-EXTRA_Nr.3.bin
/
aminet-spiele
/
zwei spieler
/
hf disk2
/
tunnel
/
tunnel.amos
/
tunnel.amosSourceCode
Wrap
AMOS Source Code
|
1993-03-08
|
13KB
|
541 lines
' 2.6.95
Set Buffer 1
Global ALLX,ALLY
If Prg Under
Bgrab 11
Else
Load "t:pankki.abk",11
End If
NAPPIS=Peek(Start(11))
MUSAT=Peek(Start(11)+1)
LEVELI=Peek(Start(11)+3)
ALLY=63
ALLX=63
Screen Open 0,20,20,2,Lowres
Screen Close 0
Auto View Off
If MUSAT
If LEVELI=1
Track Load "HF2:Tunnel/EkaTunnelModule",7
Else
Track Load "HF2:Tunnel/TokaTunnelModule",7
End If
Track Play 7
End If
Track Loop On
Screen Open 0,320,256,32,Lowres
Screen Open 1,64,74,4,Lowres
Screen To Front 0
Rem *** Siirr{ kartta KARTTA-muuttujaan
Dim RUUDUT(18,5)
' location in bank = X*ALLX+Y
Reserve As Data 9,4033
SATU=Rnd(5)+2
If LEVELI=1
Screen 1
Load Iff "HF2:Tunnel/Map 1.iff"
LOCX=1
LOCY=7
LOPPUX=31
LOPPUY=36
SUUNTA=3
Else
Load Iff "hf2:Tunnel/Map"+Str$(SATU)+".iff"
If SATU=40
LOCX=10
LOCY=10
End If
If SATU=2
LOCX=1
LOCY=35
LOPPUX=31
LOPPUY=35
SUUNTA=4
End If
If SATU=3
LOCX=14
LOCY=7
LOPPUY=7
SUUNTA=4
End If
If SATU=4
LOCX=27
LOCY=32
LOPPUX=5
LOPPUY=10
SUUNTA=1
End If
If SATU=5
LOCX=5
LOCY=7
LOPPUX=31
LOPPUY=36
SUUNTA=2
End If
If SATU=6
LOCX=13
LOCY=7
LOPPUX=31
LOPPUY=36
SUUNTA=3
End If
If SATU=7
LOCX=31
LOCY=17
LOPPUX=31
LOPPUY=36
SUUNTA=2
End If
End If
For Y=0 To ALLY
For X=0 To ALLX
Poke Start(9)+(X*ALLX+Y),Point(X,Y)
If Peek(Start(9)+(X*ALLX+Y))=3
Poke Start(9)+(X*ALLX+Y),0
End If
Next X
Next Y
Plot LOCX+9,LOCY+4,0
Screen 0
Curs Off : Flash Off : Paper 0 : Hide : Cls 1 : Flash 15,"(0FF,2)(0DD,2)(0BB,2)(099,2)(077,2)(055,2)(077,2)(099,2)(0BB,2)(0DD,2)(0FF,2)"
Screen To Front 0
Rem *** Nappaa sein{t
' | | | \ / | | |
' | | | |\ /| | | |
' | | | | \/1| | | |
' 1| 3|5|7|9/\0|8|6|4 |2
' | | | |/ \| | | |
' | | | / \ | | |
' | | |/ \| | |
Load Iff "HF2:Tunnel/1.Palat2_Taytetty_uusi"
Get Icon 1+26,0,0 To 88,255
Get Icon 2+26,95,0 To 188,255
Get Icon 3+26,192,0 To 232,126
Get Icon 4+26,232,0 To 272,126
Get Icon 5+26,192,127 To 219,189
Get Icon 6+26,232,127 To 252,189
Get Icon 7+26,267,127 To 277,158
Get Icon 8+26,291,127 To 300,158
Get Icon 9+26,268,165 To 277,181
Get Icon 10+26,291,165 To 301,181
Load Iff "HF2:Tunnel/1.Palat3_Taytetty_uusi"
Get Icon 11+26,0,0 To 41,86
Get Icon 12+26,94,0 To 135,86
Get Icon 13+26,192,0 To 251,63
Get Icon 14+26,192,127 To 251,190
Get Icon 15+26,267,127 To 299,158
Get Icon 16+26,268,165 To 296,196
Load Iff "HF2:tunnel/1.Palat4_Taytetty_uusi"
Get Icon 17+26,0,0 To 63,50
Get Icon 18+26,94,0 To 157,50
Get Icon 19+26,192,0 To 240,30
Get Icon 20+26,192,127 To 240,157
Load Iff "HF2:tunnel/1.Seinat_Taytetty_uusi"
Get Icon 23+26,1,1 To 161,126
Get Icon 24+26,1,127 To 81,191
Get Icon 25+26,1,191 To 41,222
Get Icon 26+26,1,223 To 21,239
Load Iff "hf2:tunnel/2.Seinat_Taytetty_uusi"
For COUNTER=1+52 To 22+52
Get Icon COUNTER,160,1 To 176,2
Next COUNTER
Get Icon 23+52,1,1 To 160,126
Get Icon 24+52,1,127 To 81,191
Get Icon 25+52,1,191 To 41,222
Get Icon 26+52,1,223 To 21,239
Make Icon Mask
Cls 0
Colour 15,$F00
Colour 0,0
Double Buffer
Autoback 0
Update Off
Screen Swap
Wait Vbl
Bob Clear
Proc PAIVITA
View
Timer=0
Do
If LOPPUY-1=LOCY and LOPPUX=LOCX or LOPPUY+1=LOCY and LOPPUX=LOCX or LOPPUX-1=LOCX and LOPPUY=LOCY or LOPPUX+1=LOCX and LOPPUY=LOCY
Poke Start(11)+2,0
'For A=1 To 5
' Zoom Physic(0),80,64,240,192 To Logic(0),0,0,320,256
' Screen Swap
'Next A
Exit
End If
A$=Inkey$
If A$="m"
If MUSAT
Erase 7
Else
If LEVELI=1
Track Load "HF2:Tunnel/EkaTunnelModule",7
Else
Track Load "HF2:Tunnel/TokaTunnelmodule",7
End If
Track Play 7
End If
Bchg 0,MUSAT
End If
If Key State(1)
Add NAPPIS,1,0 To 2
While Key State(1) : Wend
End If
If A$="" or NAPPI2=10 Then Goto EINAPPIA
If NAPPI=0
If A$="i" : NAPPI=1 : Else : NAPPI=0 : End If
Else
If NAPPI=1
If Not A$="i" : If A$="d" : NAPPI=2 : Else : NAPPI=0 : End If : End If
Else
If NAPPI=2
If Not A$="d" : If A$="k" : NAPPI=3 : Else : NAPPI=0 : End If : End If
Else
If NAPPI=3
If Not A$="k" : If A$="f" : NAPPI=4 : Else : NAPPI=0 : End If : End If
Else
If NAPPI=4
If Not A$="f"
If A$="a"
Load "HF2:Tunnel/hfTunnel.Abk"
Get Bob Palette
Noise To 15
Track Stop
For A=96 To 1 Step -2
Play 56-A/2,0
Bob 1,60,165+A,1
Bob Draw
Screen Swap
Wait Vbl
Bob Clear
Next A
If MUSAT
Track Play 7
End If
NAPPI=5
Else
NAPPI=0
End If
End If
End If
End If
End If
End If
End If
If NAPPI2=0 : If A$="i" : NAPPI2=1 : Else : NAPPI2=0 : End If
Else
If NAPPI2=1 : If Not A$="i" : If A$="d" : NAPPI2=2 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=2 : If Not A$="d" : If A$="s" : NAPPI2=3 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=3 : If Not A$="s" : If A$="p" : NAPPI2=4 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=4 : If Not A$="p" : If A$="i" : NAPPI2=5 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=5 : If Not A$="i" : If A$="s" : NAPPI2=6 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=6 : If Not A$="s" : If A$="p" : NAPPI2=7 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=7 : If Not A$="p" : If A$="o" : NAPPI2=8 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=8 : If Not A$="o" : If A$="p" : NAPPI2=9 : Else : NAPPI2=0 : End If : End If
Else
If NAPPI2=9 : If Not A$="p" : If A$="d" : NAPPI2=10 : Else : NAPPI2=0 : End If : End If
Else
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
EINAPPIA:
If NAPPIS=2
TIKKU=0
K=Key Shift
' Up
If Peek(Start(11)+6)<$80
If Key State(Peek(Start(11)+6))
Bset 0,TIKKU
End If
Else
If Peek(Start(11)+6)-$80=K
Bset 0,TIKKU
End If
End If
' Down
If Peek(Start(11)+8)<$80
If Key State(Peek(Start(11)+8))
Bset 1,TIKKU
End If
Else
If Peek(Start(11)+8)-$80=K
Bset 1,TIKKU
End If
End If
' Left
If Peek(Start(11)+10)<$80
If Key State(Peek(Start(11)+10))
Bset 2,TIKKU
End If
Else
If Peek(Start(11)+10)-$80=K
Bset 2,TIKKU
End If
End If
' Right
If Peek(Start(11)+12)<$80
If Key State(Peek(Start(11)+12))
Bset 3,TIKKU
End If
Else
If Peek(Start(11)+12)-$80=K
Bset 3,TIKKU
End If
End If
Else
TIKKU=Joy(NAPPIS)
End If
If Btst(0,TIKKU)
If RUUDUT(9,3)=0 or NAPPI2=10
If SUUNTA=3
Inc LOCY
End If
If SUUNTA=1
Dec LOCY
End If
If SUUNTA=2
Dec LOCX
End If
If SUUNTA=4
Inc LOCX
End If
Proc PAIVITA
End If
End If
If Btst(1,TIKKU)
If RUUDUT(9,5)=0 or NAPPI2=10
If SUUNTA=3
Dec LOCY
End If
If SUUNTA=1
Inc LOCY
End If
If SUUNTA=2
Inc LOCX
End If
If SUUNTA=4
Dec LOCX
End If
Proc PAIVITA
End If
End If
If Btst(3,TIKKU)
Dec SUUNTA
If SUUNTA=0
SUUNTA=4
End If
Proc PAIVITA
End If
If Btst(2,TIKKU)
Inc SUUNTA
If SUUNTA=5
SUUNTA=1
End If
Proc PAIVITA
End If
Screen 1
If LEVELI=1 Then AIKA=110-Timer/50 Else AIKA=170-Timer/50
Ink 0
Bar 0,94 To 32,102
Ink 1,0
Text 0,65,Str$(AIKA)+" "
Get Sprite 1,3,0,59 To 32,67
Screen 0
Bob 2,160,10,3
Bob Draw
Screen Swap
Wait Vbl
Bob Clear
Screen Copy Physic To Logic
Bob Draw
Screen Swap
Wait Vbl
Bob Clear
If AIKA<0
Poke Start(11)+2,1
Fade 10
Wait 130
Exit
End If
' If Mouse Key=2
' Timer=Timer+1000
' End If
Loop
Screen Close 1
Erase 2
If Prg Under
Poke Start(11),NAPPIS
Poke Start(11)+1,MUSAT
Bsend 11
End If
End
Procedure PAIVITA
Shared RUUDUT(),SUUNTA,LOCX,LOCY,LOPPUX,LOPPUY
If SUUNTA=1
For Y=0 To 5
For X=0 To 16
RUUDUT(X,Y)=Peek(Start(9)+((LOCX+X)*ALLX+LOCY+Y))
Next X
Next Y
Else
If SUUNTA=3
For Y=0 To 5
For X=0 To 16
RUUDUT(X,Y)=Peek(Start(9)+((LOCX+(18-X))*ALLX+(LOCY+(8-Y))))
Next X
Next Y
Else
If SUUNTA=2
For Y=0 To 5
For X=0 To 16
RUUDUT(X,Y)=Peek(Start(9)+((LOCX+Y+5)*ALLX+(LOCY+(18-X)-5)))
Next X
Next Y
Else
If SUUNTA=4
For Y=0 To 5
For X=0 To 16
RUUDUT(X,Y)=Peek(Start(9)+((LOCX+(8-Y)+5)*ALLX+(LOCY+X-5)))
Next X
Next Y
End If
End If
End If
End If
Ink 0
Bar 0,0 To 319,255
Proc SEINAT
Locate 10,1
Ink 15
If SUUNTA=1 Then Print "N"
If SUUNTA=2 Then Print "W"
If SUUNTA=3 Then Print "S"
If SUUNTA=4 Then Print "E"
Rem *** Show close map
X=0 : Y=0
Screen 1
Get Block 1,LOCX,LOCY,17,17
Screen 0
Ink 0
Bar 1,1 To 33,19
Put Block 1,1,1
Plot 10,5,15
Plot LOPPUX-LOCX+10,LOPPUY-LOCY+5,15
End Proc
Procedure SEINAT
Rem *** N{yt{ sein{t-blokit
Shared RUUDUT()
Rem ** Uloimmat sein{t
For A=1 To 17
If RUUDUT(A,0)>0 Then Paste Icon A*20-30,120,26*RUUDUT(A,0)+26
Next A
If RUUDUT(6,1)>0 Then Paste Icon 64,112,26*RUUDUT(6,1)+19
If RUUDUT(12,1)>0 Then Paste Icon 214,112,26*RUUDUT(12,1)+20
If RUUDUT(7,1)>0 Then Paste Icon 100,112,26*RUUDUT(7,1)+15
If RUUDUT(11,1)>0 Then Paste Icon 192,112,26*RUUDUT(11,1)+16
If RUUDUT(8,1)>0 Then Paste Icon 143,114,26*RUUDUT(8,1)+7
If RUUDUT(10,1)>0 Then Paste Icon 173,112,26*RUUDUT(10,1)+8
Rem ** Toiseksi uloimmat sein{t.
For A=1 To 9
If RUUDUT(A+4,1)>0 Then Paste Icon A*40-57,112,26*RUUDUT(A+4,1)+25
Next A
If RUUDUT(6,2)>0 Then Paste Icon 0,102,26*RUUDUT(6,2)+17
If RUUDUT(12,2)>0 Then Paste Icon 259,102,26*RUUDUT(12,2)+18
If RUUDUT(7,2)>0 Then Paste Icon 42,95,26*RUUDUT(7,2)+13
If RUUDUT(11,2)>0 Then Paste Icon 220,95,26*RUUDUT(11,2)+14
If RUUDUT(8,2)>0 Then Paste Icon 121,97,26*RUUDUT(8,2)+5
If RUUDUT(10,2)>0 Then Paste Icon 182,95,26*RUUDUT(10,2)+6
Rem ** Kolmanneksi uloimmat sein{t
For A=1 To 5
If RUUDUT(6+A,2)>0 Then Paste Icon A*80-118,95,26*RUUDUT(6+A,2)+24
Next A
If RUUDUT(7,3)>0 Then Paste Icon 0,83,26*RUUDUT(7,3)+11
If RUUDUT(11,3)>0 Then Paste Icon 279,83,26*RUUDUT(11,3)+12
If RUUDUT(8,3)>0 Then Paste Icon 82,65,26*RUUDUT(8,3)+3
If RUUDUT(10,3)>0 Then Paste Icon 202,65,26*RUUDUT(10,3)+4
Rem ** L{himm{t sein{t
If RUUDUT(8,3)>0 Then Paste Icon -78,65,26*RUUDUT(8,3)+23
If RUUDUT(9,3)>0 Then Paste Icon 81,65,26*RUUDUT(9,3)+23
If RUUDUT(10,3)>0 Then Paste Icon 240,65,26*RUUDUT(10,3)+23
If RUUDUT(8,4)>0 Then Paste Icon 0,0,26*RUUDUT(8,4)+1
If RUUDUT(10,4)>0 Then Paste Icon 240,0,26*RUUDUT(10,4)+2
End Proc